package J1202_night;

public class MyQueue {
    public static class ListNode {
        int val;
        ListNode next;
        ListNode prev;
        public ListNode(int val) {
            this.val = val;
        }
    }
    int front;
    int rear;
    int[] elem;
    //这题想通过力扣 就不要使用浪费空间的用法 或者多申请一个空间
    public MyQueue(int k) {
        elem = new int[k + 1];
    }
    //删除队头元素
    public boolean deQueue() {
        //判断对头是不是为空
        if(isEmpty()) {
            return false;
        }
        front = (front + 1) % elem.length;
        return true;
    }
    //得到队头元素 不删除
    public int Front() {
        if(isEmpty()) {
            return -1;
        }
        return elem[front];
    }
    //得到队尾元素 不删除
    public int Rear() {
        if(isEmpty()) {
            return -1;
        }
        //如果rear是在0位置
        if(rear == 0) {
            return elem[elem.length - 1];
        }
        return elem[rear - 1];
    }
    //判空    front和rear相遇
    public boolean isEmpty() {
        return front == rear;
    }

    public boolean ifFull() {
        return (rear + 1) % elem.length == front;
    }
}
